package com.one.service;

/**
 * Create on 2022-01-16
 * <p>
 * Author: LiangWei
 * <p>
 * Description: 下单和抢购接口
 **/
public interface OrderFlashSaleService {
    /**
     *@author : LiangWei
     *@date : 2022-01-16 15:13
     *@return :
     *@description : 初始化库存到redis
     */
    void initProdStockToRedis(String prodId);
    /**
     *@author : LiangWei
     *@date : 2022-01-17 10:18
     *@return :
     *@description : 锁定用户和商品，确保用户在抢购活动中只能购买一次商品，锁3600s
     */
    boolean lockFlashSaleUserProd(String userId,String prodId);
    /**
     *@author : LiangWei
     *@date : 2022-01-17 10:47
     *@return :
     *@description : 校验库存是否充足
     */
    boolean checkProdStockEnough(String prodId);
    /**
     *@author : LiangWei
     *@date : 2022-01-17 11:37
     *@return :
     *@description : 判断库存锁是否已经释放
     */
    boolean checkProdStockLocked(String prodId);
    /**
     *@author : LiangWei
     *@date : 2022-01-17 11:56
     *@return :
     *@description : 释放库存锁
     */
    void releaseProdStockLocked(String proId);
    /**
     *@author : LiangWei
     *@date : 2022-01-18 17:22
     *@return :
     *@description : 在redis中获取订单状态
     */
    int getTradeOrderStateFromRedis(String key);
    /**
     *@author : LiangWei
     *@date : 2022-01-18 18:35
     *@return :
     *@description : 扣减库存，原子性操作
     */
    void subProdStockCount(String prodId,Integer buyCount);
}
